图像鲁棒性 |
您所在的位置:网站首页 › matlab 图片裁剪 › 图像鲁棒性 |
一、14种图像攻击 ( a )JPEG压缩。质量因子Q分别为10%、30%、50%、70%、90%。 ( b )高斯噪声。平均μ为0,方差σ分别为0.001、0.005和0.1。 ( c )椒盐噪音。平均μ为0,方差σ分别为0.001、0.005、0.1。 ( d )散斑噪声。平均μ为0,方差σ分别为0.01、0.05、0.1。 ( e )平均滤波。窗口大小分别为3 × 3、5 × 5和7 × 7。 ( f )中值滤波。窗口大小分别为3 × 3、5 × 5和7 × 7。 ( g )高斯低通滤波。窗口大小分别为3 × 3、5 × 5和7 × 7。 ( h )中心修剪,比例为20%和50%。 ( i )边缘修剪,比例为10%和20%。 ( j )旋转。旋转角度分别为10°、30°、50°。 ( k )平移。由于数据库的图像大小不同,在Holidays数据库中的平移距离分别为是(80,50)、(160,100)和(320,200)。ImageNet数据库中的平移距离为分别为(16,10),(32,20)、(40,25)。 ( l )缩放。缩放比例分别为0.3、0.5、0.75、1.5和3。 ( m )颜色直方图均衡化。 ( n )伽马校正系数为0.8。 二、matlab实现 1、JPEG压缩攻击 % jpegattack.m function jpegattack_img=jpegattack(img,qualityfactor) imwrite(img,'jpegattackimage.jpg','jpg','quality',qualityfactor); jpegattack_img = imread('jpegattackimage.jpg'); end2、高斯噪声攻击 % gaussianattack.m function gaussianattack_img=gaussianattack(img,var1) gaussianattack_img=imnoise(img,'gaussian',0,var1); end3、椒盐噪声攻击 % saltpepperattack.m function saltpepperattack_img=saltpepperattack(img,var2) saltpepperattack_img=imnoise(img,'salt & pepper',var2); end4、散斑噪声攻击 % speckleattack.m function speckleattack_img=speckleattack(img,var3) speckleattack_img=imnoise(img,'speckle',var3); end5、高斯低通滤波攻击 % gaussianlowpassattack.m function gaussianlowpassattack_img=gaussianlowpassattack(img,k) h = fspecial('gaussian',[k,k]); % B=imfilter(A,h,options,...)其中options可以是: % 'symmetric'边界之外的输入数组值是通过沿数组边界对数组进行镜面反射得到 % 'replicate'边界之外的输入数组值假定为等于最近的数组边界值 % 'circular'边界之外的输入数组值是通过隐式假设输入数组具有周期性来计算(以上为填充选项) % 'same'默认选项.输出数组与输入数组大小相同 % 'full'输出数组是完全滤波后的结果(以上为输出大小选项) % 'corr'默认选项.使用相关性执行多维滤波,这与filter2执行滤波的方式相同 % 'conv'使用卷积执行多维滤波(以上为相关性和卷积选项) gaussianlowpassattack_img=imfilter(img,h,'replicate'); end6、均值滤波攻击 % meanattack.m function meanattack_img=meanattack(img,n) % 第一种方法 % h=fspecial('average',[n,n]); % meanattack_img=imfilter(img,h); % 第二种方法 % imfilter函数为多维图像的 N 维滤波 h=fspecial('average',[n,n]); img_m(:,:,1)=imfilter(img(:,:,1),h); img_m(:,:,2)=imfilter(img(:,:,2),h); img_m(:,:,3)=imfilter(img(:,:,3),h); meanattack_img=img_m; end7、中值滤波攻击 % medianattack.m function medianattack_img=medianattack(img,m) % medfilt2函数为二维中位数滤波,第一个参数必须是二维的. % 当需要对彩图像进行中值滤波时,需要分别对三个R,G,B通道进行中值滤波即可 medianattack_img(:,:,1)=medfilt2(img(:,:,1),[m,m]); medianattack_img(:,:,2)=medfilt2(img(:,:,2),[m,m]); medianattack_img(:,:,3)=medfilt2(img(:,:,3),[m,m]); end8、中心裁剪攻击 % centeredattack.m function centeredattack_img=centeredattack(img,percentage) img_cc=img; row=size(img_cc,1);% row为图像的长 col=size(img_cc,2);% col为图像的宽 row_begin=round((row-round(row*percentage))/2); row_end=round((col-round(col*percentage))/2)+round(row*percentage); col_begin = round((col-round(col*percentage))/2); col_end = round((col-round(col*percentage))/2) + round(col*percentage); img_cc(row_begin:row_end,col_begin:col_end,:) = 0;% 将选中的区域的值置为0,即显示为白色 centeredattack_img=img_cc; end9、边缘裁剪攻击 % edgeattack.m function edgeattack_img=edgeattack(img,percentage) img_ec=img; row=size(img_ec,1); col=size(img_ec,2); row_half=round(round(row*percentage)/2); col_half=round(round(col*percentage)/2); % 将图像四条边缘条值置为0,即显示为黑色 img_ec(1:row_half,:,:) = 0; img_ec(:,1:col_half,:) = 0; img_ec((row-row_half):row,:,:) = 0; img_ec(:,(col-col_half):col,:) = 0; edgeattack_img=img_ec; end10、旋转攻击 % rotationattack.m function rotationattack_img=rotationattack(img,angle) % J=imrotate(I,angle,method,bbox)中method是文本字符串,需要引号引出,method包括:'nearest'-最临近插值(默认值)、'bilinear'-双线性插值、'bicubic’-双三次插值 % bbox是文本字符串,需要引号引出,bbox包括:'crop’输出的图像B和输入的图像A保持一致的尺寸,裁剪旋转的图像至合适的大小;'loose’输出足够容纳整个旋转图像的图像B,图像B通常比图像A大-默认值 rotationattack_img=imrotate(img,angle,'bicubic','crop');% 此函数将图像I围绕其中心点逆时针方向旋转angle度。要顺时针旋转图像,请为angle指定负值。 end11、平移攻击 % translationattack.m function translationattack_img=translationattack(img,location) row=size(img,1); col=size(img,2); image_t=zeros(row,col,3,'uint8');% 注意一定需要加上'uint8',否则只能显示白色图像 image_t((location(1,1)+1):row,(location(1,2)+1):col,:,:)=img(1:(row-location(1,1)),1:(col-location(1,2)),:,:); translationattack_img=image_t; end12、缩放攻击 % rescalingattack.m function rescalingattack_img=rescalingattack(img,scale) row=size(img,1); col=size(img,2); row_scaling=round(row*scale);% 考虑小数的情况,取四舍五入 col_scaling=round(col*scale); image_s=imresize(img,[row_scaling,col_scaling]); rescalingattack_img=image_s; end13、颜色直方图均衡化攻击 % histogramattack.m function histogramattack_img=histogramattack(img) % histeq函数使用直方图均衡增强对比度(主要针对灰度图像使用,若对RGB图像处理,则分别需要对三个r,g,b通道处理) % J=histeq(I,n) 指定直方图均衡后的灰度级数n,默认值为64 % histogramattack_img=histeq(img)使用该语句只能处理一个通道 r=img(:,:,1); g=img(:,:,2); b=img(:,:,3); image_h(:,:,1)=histeq(r,256); image_h(:,:,2)=histeq(g,256); image_h(:,:,3)=histeq(b,256); histogramattack_img=image_h; end14、伽马校正攻击 % gammaattack.m function gammaattack_img=gammaattack(img,gamma) % 第一种写法 % img=im2double(img);% 若不使用im2double,会报错:错误使用 .^, 整数只能提升为正整数幂 % gammaattack_img=img.^gamma; % 第二种写法 % J=imadjust(I,[low_in high_in],[low_out high_out],gamma),imadjust函数调整图像强度值或颜色图 % 将灰度图像 I 中的强度值映射到 J 中的新值,即将low_in至high_in之间的值映射到low_out至high_out之间的值,其中 gamma指定描述值I和值J关系的曲线形状 gammaattack_img=imadjust(img,[],[],gamma); end15、主函数 % main.m clc;clear;close all; N=512; img=imread('football.jpg'); img=imresize(img,[N N],'bicubic');% 采用双三次插值(bicubic)将图像大小归一化为512*512大小,B = imresize(A,[mrows ncols],method)将图片A由参数method指定的插值运算方法来改变图像的大小到长宽为[mrows ncols] % 1、JPEG压缩攻击(qualityfactor可取参数10,30,50,70,90) qualityfactor=10; jpegattack_img=jpegattack(img,qualityfactor); figure(1), subplot(121),imshow(img); title('原始图像'); subplot(122),imshow(jpegattack_img); title('JPEG压缩攻击后的图像'); % 2、高斯噪声攻击(var1可取参数0.001,0.005,0.1) var1=0.001; gaussianattack_img=gaussianattack(img,var1); figure(2), subplot(121),imshow(img); title('原始图像'); subplot(122),imshow(gaussianattack_img); title('高斯噪声攻击后的图像'); % 3、椒盐噪声攻击(var2可取参数0.001,0.005,0.1) var2=0.001; saltpepperattack_img=saltpepperattack(img,var2); figure(3), subplot(121),imshow(img); title('原始图像'); subplot(122),imshow(saltpepperattack_img); title('椒盐噪声攻击后的图像'); % 4、散斑噪声攻击(var3可取参数0.01,0.05,0.1) var3=0.01; speckleattack_img=speckleattack(img,var3); figure(4), subplot(121),imshow(img); title('原始图像'); subplot(122),imshow(speckleattack_img); title('散斑噪声攻击后的图像'); % 5、高斯低通滤波攻击(k1可取参数3、5、7) k1=3; gaussianlowpassattack_img=gaussianlowpassattack(img,k1); figure(5), subplot(121),imshow(img); title('原始图像'); subplot(122),imshow(gaussianlowpassattack_img); title('高斯低通滤波攻击后的图像'); % 6、均值滤波攻击(k2可取参数3、5、7) k2=3; meanattack_img=meanattack(img,k2); figure(6), subplot(121),imshow(img); title('原始图像'); subplot(122),imshow(meanattack_img); title('均值滤波攻击后的图像'); % 7、中值滤波攻击(k3可取参数3、5、7) k3=3; medianattack_img=medianattack(img,k3); figure(7), subplot(121),imshow(img); title('原始图像'); subplot(122),imshow(medianattack_img); title('中值滤波攻击后的图像'); % 8、中心裁剪攻击(percentage可取参数0.2和0.5) percentage=0.2; centeredattack_img = centeredattack(img,percentage); figure(8), subplot(121),imshow(img); title('原始图像'); subplot(122),imshow(centeredattack_img); title('中心裁剪攻击后的图像'); % 9、边缘裁剪攻击(percentage可取参数0.1和0.2) percentage=0.1; edgeattack_img = edgeattack(img,percentage); figure(9), subplot(121),imshow(img); title('原始图像'); subplot(122),imshow(edgeattack_img); title('边缘裁剪攻击后的图像'); % 10、旋转攻击(angle可取参数10,30和50) angle=30; rotationattack_img=rotationattack(img,angle); figure(10), subplot(121),imshow(img); title('原始图像'); subplot(122),imshow(rotationattack_img); title('旋转攻击后的图像'); % 11、平移攻击(在Holidays数据集中(80,50),(160,100)和(320,200),注意图像规格为512*512) location=[80,50]; translationattack_img=translationattack(img,location); figure(11), subplot(121),imshow(img); title('原始图像'); subplot(122),imshow(translationattack_img); title('平移攻击后的图像'); % 12、缩放攻击(scale可取参数0.3,0.5,0.75,1.5和3) scale=3; rescalingattack_img=rescalingattack(img,scale); figure(12), subplot(121),imshow(img); title('原始图像'); subplot(122),imshow(rescalingattack_img); title('缩放攻击后的图像'); % 13、颜色直方图均衡化攻击(无参数) histogramattack_img=histogramattack(img); figure(13), subplot(121),imshow(img); title('原始图像'); subplot(122),imshow(histogramattack_img); title('颜色直方图均衡化攻击后的图像'); % 14、伽马校正攻击(gamma可取参数0.8) gamma=0.8; gammaattack_img=gammaattack(img,gamma); figure(14), subplot(121),imshow(img); title('原始图像'); subplot(122),imshow(gammaattack_img); title('伽马校正攻击后的图像');三、matlab实现效果 1、JPEG压缩攻击 3、椒盐噪声攻击 4、散斑噪声攻击 5、高斯低通滤波攻击 6、均值滤波攻击 7、中值滤波攻击 8、中心裁剪攻击 9、边缘裁剪攻击 10、旋转攻击 11、平移攻击 12、缩放攻击 13、颜色直方图均衡化攻击 14、伽马校正攻击 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |